home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
EnigmA Amiga Run 1995 November
/
EnigmA AMIGA RUN 02 (1995)(G.R. Edizioni)(IT)[!][issue 1995-11][Skylink CD].iso
/
earcd
/
ead
/
ead17.dms
/
ead17.adf
/
Listati
/
clips.c
< prev
next >
Wrap
C/C++ Source or Header
|
1989-08-01
|
4KB
|
155 lines
/**************************************************************************
Clips.c - Testo sorgente in linguaggio C di pubblico dominio -
Trasferisce in RAM un file ASCII per il trattamento con editor AmigaBASIC
---------------------------------------------------------------------------
Scritto da Paolo Bozzo - Via Bolzano, 23 - Milano
Ringraziamenti a Luigi Callegari per la revisione
(Versione 1.1 - gira anche da WorkBench)
---------------------------------------------------------------------------
Compilazione Lattice V5.0:
lc -v -cw Clips
Blink lib:c.o clips.o LIB lib:lc.lib lib:amiga.lib DEFINE __main __tinymain SC SD ND
Compilazione Aztec C V3.6: cc +L Clips ------ ln clips c32.lib
***************************************************************************/
#include <exec/types.h>
#include <libraries/dosextens.h>
#include <workbench/startup.h>
#include <ctype.h>
#ifndef AZTEC_C
#include <proto/dos.h>
#include <proto/exec.h>
#include <string.h>
#else
#include <functions.h>
#endif
#define RETURN '\r'
#define NEWLINE '\n'
#define MAXWINDOW 40
struct FileHandle *finestra;
void print(s) /* stampa una stringa */
char*s;
{
Write((BPTR)finestra, s, strlen(s));
}
void main (argc,argv)
int argc;
char **argv;
{
register struct WBArg *argomento;
register struct Lock *indirizzo_dir;
struct FileHandle *infile, *outfile;
register LONG mia_dir=0;
register UBYTE buffer[512];
register int lung, i;
UBYTE *io, *file;
int args_number;
static char window[MAXWINDOW+18];
infile = outfile = NULL; /* evita spiacevoli visite */
if ( argc == 0 ) /* se lanciato da WorkBench */
{
argomento = ((struct WBStartup *)argv) -> sm_ArgList;
io = (UBYTE *) argomento[0].wa_Name; /*nome di clips*/
args_number = ((struct WBStartup *)argv) -> sm_NumArgs; /*numero argomenti WB*/
strcpy(window, "con:10/10/320/80/");
strncat(window, io, MAXWINDOW);
finestra = (struct FileHandle *)Open(window,MODE_NEWFILE);
if (args_number != 2)
{
print( " USO: \n un click sull'icona di ");
print( io);
print( "\n SHIFT + due click su quella del\n");
print( " file ASCII da trasferire.\n");
goto fine;
}
file = (UBYTE *)argomento[1].wa_Name; /*nome file ASCII*/
indirizzo_dir = (struct Lock *)argomento[1].wa_Lock;
mia_dir = CurrentDir((BPTR)indirizzo_dir); /*cambio directory*/
}
else /* se lanciato da CLI */
{
io = argv[0]; /*nome di clips*/
finestra = (struct FileHandle *)Output(); /*finestra CLI */
if (argc == 2)
file = argv[1]; /*nome file ASCII*/
else
{
print( "Sintassi: ");
print( io);print( " nome_file\n");
goto fine;
}
}
if ( ! ( infile = (struct FileHandle *)Open( (char *) file, MODE_OLDFILE)) )
{
print( " errore: file non trovato.\n");
goto fine;
}
lung = Read((BPTR)infile, buffer, 512);
for ( i = 0; i < 8; i++ )
{
if ( ! ( isascii( buffer[i]) )) /* se i primi byte non sono ASCII */
{
print( " Il file selezionato non è ASCII!\n");
goto fine;
}
}
if ( ! (outfile = (struct FileHandle *)Open("ram:BasicClip",MODE_NEWFILE)))
{
print( " operazione fallita.\n");
goto fine;
}
/* Questa è la parte centrale */
do
{
for ( i = 0; i < lung; i++ )
if ( buffer[i] == NEWLINE)
buffer[i] = RETURN;
Write((BPTR)outfile, buffer,lung);
}
while ( (lung=Read((BPTR)infile, buffer,512))!=0);
print( " operazione conclusa!\n");
fine:
if (mia_dir) CurrentDir(mia_dir);
if (infile) Close((BPTR) infile);
if (outfile) Close((BPTR) outfile);
if (argc==0)
{
print( "\n Premere RETURN");
while (Read((BPTR)finestra,file,1),*file!='\n');
Close ((BPTR) finestra);
}
}
#ifndef AZTEC_C
void MemCleanup() {}
#endif
/* ******************************* FINE DEL FILE ************************* */